package com.gong.gongcloudpicture1.model.enums;


import lombok.Getter;
import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.stream.Collector;
import java.util.stream.Collectors;


/**
 * 用户角色枚举
 */
@Getter
public enum UserRoleEnum {


    USER("用户", "user"),
    ADMIN("管理员", "admin");
    ;


    /**
     * 角色名称
     */
    private final String name;

    /**
     * 角色编码
     */
    private final String value;


    UserRoleEnum(final String name, final String value) {
        this.name = name;
        this.value = value;
    }


    /**
     * 根据value值查找枚举
     * @param value
     * @return
     */
    public static UserRoleEnum getUserRoleEnumByValue(String value) {
        if (StringUtils.isBlank(value)) {
            return null;
        }
        //如果枚举越来越多, 在使用for循环时, 查询时间会随着数据的增加而增加 时间复杂度O(n)
        //可有收集为一个HashMap, 通过hash值直接定位键来进行查找, 时间复杂度O(1)
        Map<String, UserRoleEnum> map = Arrays.stream(UserRoleEnum.values()).collect(Collectors.toMap(UserRoleEnum::getValue, e -> e));
        return map.get(value);
    }


}
